Enterprise Version
circular abstraction